home *** CD-ROM | disk | FTP | other *** search
/ TOS Silver 2000 / TOS Silver 2000.iso / programm / MM2_DEV / S / GEM / AESMENUS.I < prev    next >
Encoding:
Modula Implementation  |  1993-12-10  |  4.0 KB  |  150 lines

  1. IMPLEMENTATION MODULE AESMenus;
  2. (*$L-, N+, Y+*)
  3.  
  4.  
  5. (*  MEGAMAX MODULA 2 GEM-Library :  Die AES Menufunktionen
  6.  *
  7.  *  Autor: Manuel Chakravarty           Erstellt :  05.11.87
  8.  *
  9.  *  Version   2.3     V#0022
  10.  *)
  11.  
  12. (*  05.11.87    | Übernahme von 'GEMBase'
  13.  *  ???????? TT | REF-Parm.
  14.  *  02.04.90    | Anpassung auf public arrays
  15.  *  22.05.93    | Anpassung MenuBar f. MultiTOS
  16.  *)
  17.  
  18.  
  19. FROM    SYSTEM          IMPORT ASSEMBLER;
  20.  
  21. FROM    GEMGlobals      IMPORT PtrObjTree, PtrMaxStr;
  22.  
  23. IMPORT  GEMShare;
  24.  
  25. (*$I GEMOPS.ICL *)
  26.  
  27.  
  28. PROCEDURE MenuBar(tree:PtrObjTree;show:BOOLEAN);
  29.  
  30. BEGIN
  31.   ASSEMBLER
  32.     (* wenn wir das machen, wird die menubar nie sichtbar unter multitos:
  33.                 
  34.                 MOVE.L      our_cb,A1
  35.                 CMPI.W      #-1,cb.GLOBAL.ap_count(A1)      ; MultiTOS?
  36.                 BNE         noMulti
  37.                 
  38.                 (*
  39.                  * Bei MultiTOS Funktion nur ausführen, wenn Menubar sichtbar ist.
  40.                  *)
  41.                 MOVE.L      pubs,A0
  42.                 MOVE.W      #-1,pubArrays.aINTIN(A0)
  43.                 MOVE.W      #MENU_BAR,(A3)+
  44.                 JSR         aes_if                  ; ap_id der akt. Menubar ermitteln
  45.                 MOVE.L      pubs,A0
  46.                 MOVE.W      pubArrays.aINTOUT(A0),D0
  47.                 MOVE.L      our_cb,A1
  48.                 CMP.W       cb.GLOBAL.ap_id(A1),D0  ; unsere Menubar?
  49.                 BNE         noMbar
  50.     *)
  51.     
  52.   noMulti:
  53.     MOVE.L      pubs,A0
  54.     MOVE.W      -(A3),pubArrays.aINTIN(A0)
  55.     MOVE.L      -(A3),pubArrays.ADDRIN(A0)
  56.     MOVE.W      #MENU_BAR,(A3)+
  57.     JSR         aes_if
  58.     (*
  59.       Result ignorieren, da unter MultiTOS evtl. Fehler gemeldet wird, wenn
  60.       noch eine fremde menubar aktiv (z.B. nach Rückkehr von gestartetem
  61.       Prg in der Shell):
  62.                 JSR         testINTOUT0
  63.      *)
  64.   noMbar:
  65.   END;
  66. END MenuBar;
  67.  
  68. PROCEDURE CheckItem(tree:PtrObjTree;item:CARDINAL;check:BOOLEAN);
  69.  
  70. BEGIN
  71.   ASSEMBLER
  72.     MOVE.L      pubs,A0
  73.     MOVE.L      -(A3),pubArrays.aINTIN(A0)
  74.     MOVE.L      -(A3),pubArrays.ADDRIN(A0)
  75.     MOVE.W      #MENU_ICHECK,(A3)+
  76.     JSR         aes_if
  77.     JSR         testINTOUT0
  78.   END;
  79. END CheckItem;
  80.  
  81. PROCEDURE EnableItem(tree:PtrObjTree;item:CARDINAL;enable:BOOLEAN);
  82.         
  83. BEGIN
  84.   ASSEMBLER
  85.     MOVE.L      pubs,A0
  86.     MOVE.L      -(A3),pubArrays.aINTIN(A0)
  87.     MOVE.L      -(A3),pubArrays.ADDRIN(A0)
  88.     MOVE.W      #MENU_IENABLE,(A3)+
  89.     JSR         aes_if
  90.     JSR         testINTOUT0
  91.   END;
  92. END EnableItem;
  93.         
  94. PROCEDURE NormalTitle(tree:PtrObjTree;title:CARDINAL;normal:BOOLEAN);
  95.  
  96. BEGIN
  97.   ASSEMBLER
  98.     MOVE.L      pubs,A0
  99.     MOVE.L      -(A3),pubArrays.aINTIN(A0)
  100.     MOVE.L      -(A3),pubArrays.ADDRIN(A0)
  101.     MOVE.W      #MENU_TNORMAL,(A3)+
  102.     JSR         aes_if
  103.     JSR         testINTOUT0
  104.   END;
  105. END NormalTitle;
  106.  
  107. PROCEDURE MenuText(tree:PtrObjTree;item:CARDINAL;REF text:ARRAY OF CHAR);
  108.  
  109. BEGIN
  110.   ASSEMBLER
  111.     JSR         stringIntoCFormat   ; Anf.addr des Str. auf den Stack
  112.     MOVE.L      pubs,A0
  113.     MOVE.W      -(A3),pubArrays.aINTIN(A0)
  114.     MOVE.L      -(A3),pubArrays.ADDRIN(A0)
  115.     MOVE.L      D2,pubArrays.ADDRIN+4(A0)
  116.     MOVE.W      #MENU_TEXT,(A3)+
  117.     JSR         aes_if
  118.     MOVE.L      (A7),A7             ; String wieder vom Stack runterholen
  119.     JSR         testINTOUT0
  120.   END;
  121. END MenuText;
  122.  
  123. PROCEDURE RegisterAcc(title:PtrMaxStr;VAR id:CARDINAL;VAR success:BOOLEAN);
  124.  
  125. BEGIN
  126.   ASSEMBLER
  127.         MOVE.L  -(A3),-(A7)
  128.         MOVE.L  -(A3),-(A7)
  129.         
  130.         MOVE.L  pubs,A0
  131.         MOVE.L  our_cb, A1
  132.         MOVE.L  -(A3),pubArrays.ADDRIN(A0)
  133.         MOVE.W  cb.GLOBAL.ap_id(A1),pubArrays.aINTIN(A0)
  134.         MOVE.W  #MENU_REGISTER,(A3)+
  135.         JSR     aes_if
  136.         
  137.         CLR.W   D1
  138.         MOVE.L  pubs,A0
  139.         MOVE.W  pubArrays.aINTOUT(A0),D0
  140.         SMI     D1
  141.         ADDQ.B  #1,D1
  142.         MOVE.L  (A7)+,A1
  143.         MOVE.W  D0,(A1)
  144.         MOVE.L  (A7)+,A1
  145.         MOVE.W  D1,(A1)         ;  success:=(pubs^.INTOUT[0]>=0)
  146.   END;
  147. END RegisterAcc;
  148.  
  149.  
  150. END AESMenus.